/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package muhnes.sizoo.controlador;

import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ComponentSystemEvent;
import muhnes.sizoo.dal.BitacoraDao;
import muhnes.sizoo.dal.FabricaDAO;
import muhnes.sizoo.modelo.Bitacora;

/**
 *Clase controladora que se encarga de realizar todas las operaciones para la vista
 * @author Nelson Chicas
 */
@ManagedBean(name = "bitacoraBean")
@ViewScoped
public class BitacoraBean implements Serializable {
    
    @ManagedProperty(value="#{sesionBean}")
    private SesionBean sesionBean;
    
    private List< Bitacora > listaEventos;
    private List< Bitacora > listaEventosFiltrados;
    
    public BitacoraBean() {
    }
    
    public void setSesionBean(SesionBean sesionBean) {
        this.sesionBean = sesionBean;
    }
    
    /**
     * Metodo para verificar que solo revisen la bitacora aquellos usuarios con permiso
     * @param evento
     * @throws IOException 
     */
    public void validarAcceso(ComponentSystemEvent evento) throws IOException {
        boolean accesoPermitido = sesionBean.verificarPermiso("consultar", "bitacora");
        
        if( !accesoPermitido ) {
            FacesContext contexto = FacesContext.getCurrentInstance();
            String nombreContexto = contexto.getExternalContext().getRequestContextPath();
            String urlError = nombreContexto + "/paginas/errores/error.xhtml";
            contexto.getExternalContext().redirect(urlError);
        }
    }

    public List< Bitacora > getListaEventos() {
        if( listaEventos == null ) {
            BitacoraDao dao = FabricaDAO.crearBitacoraDao();
            listaEventos = dao.buscarTodos();
        }
        return listaEventos;
    }
    
    public List< Bitacora > getListaEventosFiltrados() {
        return listaEventosFiltrados;
    }
    
    public void setListaEventosFiltrados( List<Bitacora> listaEventosFiltrados ) {
        this.listaEventosFiltrados = listaEventosFiltrados;
    }
    
}


